/**
 * 项目名称:
 *
 * @Author: 夏国倩
 * @Date: 2023/9/20 11:12
 * @Copyright
 */
package Collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/*
使用集合时，需要注意以下几点：
集合中存储其实就是对象的地址
JDK1.5以后集合中就可以存储基本数值了
因为出现了基本数据类型包装类，它提供了自动装箱的操作。这样，集合中的元素就是基本数值的包装类对象
 */
public class Iterator2 {
    public static void main(String[] args) {
        //存储任何类型，存储时提升了Object，取出时要使用元素特有内容，必须向下转型
        Collection coll=new ArrayList();
        coll.add("abc");
        coll.add("ef");
        coll.add("money");
        coll.add("123");
        coll.add(8);
        coll.add(9.8);
        coll.add('d');
        Iterator it=coll.iterator();
        while (it.hasNext()){
            //由于元素被存放进集合后全部提升为Object类型
            //当需要使用子类对象特有的方法时，需要向下转型
            String str=(String)it.next();
            System.out.println(str.length());
            //length()
        }
        //注意：如果集合中存放的是多个对象，这时进行向下转型会出现类型转换异常
        //使用<>来控制迭代元素的类型
        Collection<String> coll2=new ArrayList<String>();
        coll.add("abe");
        coll.add("sfsdfg");
        coll.add("student");
        Iterator<String> it2 = coll2.iterator();
        while (it2.hasNext()){
            String s=it2.next();//当使用<String>控制元素类型后，就不要强转。获取到的元素就是String
            System.out.println(s);
        }
        //for循环迭代写法
        for(Iterator<String> it3=coll2.iterator();it3.hasNext();){
            System.out.println(it3.next());
        }
    }
}
